"""
Lambda 函数
- 声明并调用lambda函数
- Lambda 函数参数
- Lambda 函数的关键特性
"""


# 1. 声明并调用lambda函数
def greet_regular():
    print("hello world")


greet_regular()

greet_lambda = lambda: print("hello world")
greet_lambda()

# 2. lambda函数参数
x_lambda = lambda a: a + 10
print(x_lambda(5))
print(x_lambda(a=5))

y_lambda = lambda a, b: a + b
print(y_lambda(3, 4))
print(y_lambda(a=3, b=4))
print(y_lambda(b=4, a=3))


# 3. lambda函数的关键特性
# 3.1 可以被立即调用
def multiply(x, y):
    return x * y


print(multiply(3, 4))

print((lambda x, y: x * y)(3, 4))

# 3.2 可以频繁的结合map,filter,reduce高级函数使用
nums = [1, 2, 3, 4, 5, 6, 7, 8]
print(list(map(lambda a: a * a, nums)))
print(list(filter(lambda a: a % 2 == 0, nums)))

from functools import reduce

print(reduce(lambda a, b: a + a, nums))
